/**
 * 全局常量定义
 */

// 订单状态
export const ORDER_STATUS = {
  PENDING_PAYMENT: 'pending_payment', // 待付款
  PENDING_SHIPMENT: 'pending_shipment', // 待发货
  SHIPPED: 'shipped', // 已发货
  DELIVERED: 'delivered', // 已送达
  COMPLETED: 'completed', // 已完成
  CANCELLED: 'cancelled', // 已取消
  REFUNDING: 'refunding', // 退款中
  REFUNDED: 'refunded' // 已退款
}

// 订单状态文字映射
export const ORDER_STATUS_TEXT = {
  [ORDER_STATUS.PENDING_PAYMENT]: '待付款',
  [ORDER_STATUS.PENDING_SHIPMENT]: '待发货',
  [ORDER_STATUS.SHIPPED]: '已发货',
  [ORDER_STATUS.DELIVERED]: '已送达',
  [ORDER_STATUS.COMPLETED]: '已完成',
  [ORDER_STATUS.CANCELLED]: '已取消',
  [ORDER_STATUS.REFUNDING]: '退款中',
  [ORDER_STATUS.REFUNDED]: '已退款'
}

// 支付方式
export const PAYMENT_METHOD = {
  ONLINE: 'online', // 在线支付
  CASH: 'cash', // 现金支付
  COMPANY: 'company' // 公司支付
}

// 支付方式文字映射
export const PAYMENT_METHOD_TEXT = {
  [PAYMENT_METHOD.ONLINE]: '在线支付',
  [PAYMENT_METHOD.CASH]: '现金支付',
  [PAYMENT_METHOD.COMPANY]: '公司支付'
}

// 购物车类型
export const CART_TYPE = {
  PERSONAL: 'personal', // 个人购物车
  SHIP: 'ship' // 船舶购物车
}

// 购物车类型文字映射
export const CART_TYPE_TEXT = {
  [CART_TYPE.PERSONAL]: '个人购物车',
  [CART_TYPE.SHIP]: '船舶购物车'
}

// 消息类型
export const MESSAGE_TYPE = {
  TEXT: 'text', // 文字消息
  IMAGE: 'image', // 图片消息
  VOICE: 'voice', // 语音消息
  VIDEO: 'video', // 视频消息
  FILE: 'file', // 文件消息
  SYSTEM: 'system' // 系统消息
}

// 消息类型文字映射
export const MESSAGE_TYPE_TEXT = {
  [MESSAGE_TYPE.TEXT]: '文字',
  [MESSAGE_TYPE.IMAGE]: '图片',
  [MESSAGE_TYPE.VOICE]: '语音',
  [MESSAGE_TYPE.VIDEO]: '视频',
  [MESSAGE_TYPE.FILE]: '文件',
  [MESSAGE_TYPE.SYSTEM]: '系统消息'
}

// 好友申请状态
export const FRIEND_REQUEST_STATUS = {
  PENDING: 'pending', // 待处理
  ACCEPTED: 'accepted', // 已同意
  REJECTED: 'rejected' // 已拒绝
}

// 用户在线状态
export const USER_ONLINE_STATUS = {
  ONLINE: 'online', // 在线
  OFFLINE: 'offline', // 离线
  BUSY: 'busy' // 忙碌
}

// 认证状态
export const AUTH_STATUS = {
  PENDING: 'pending', // 待审核
  APPROVED: 'approved', // 已通过
  REJECTED: 'rejected' // 已拒绝
}

// 认证状态文字映射
export const AUTH_STATUS_TEXT = {
  [AUTH_STATUS.PENDING]: '待审核',
  [AUTH_STATUS.APPROVED]: '已通过',
  [AUTH_STATUS.REJECTED]: '已拒绝'
}

// 文件类型
export const FILE_TYPE = {
  IMAGE: 'image',
  VIDEO: 'video',
  AUDIO: 'audio',
  DOCUMENT: 'document',
  OTHER: 'other'
}

// 文件扩展名映射
export const FILE_EXTENSIONS = {
  [FILE_TYPE.IMAGE]: ['jpg', 'jpeg', 'png', 'gif', 'webp', 'bmp'],
  [FILE_TYPE.VIDEO]: ['mp4', 'avi', 'mov', 'wmv', 'flv', 'mkv'],
  [FILE_TYPE.AUDIO]: ['mp3', 'wav', 'flac', 'aac', 'm4a'],
  [FILE_TYPE.DOCUMENT]: ['pdf', 'doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx', 'txt']
}

// 商品标签类型
export const PRODUCT_TAG_TYPE = {
  HOT: 'hot', // 热销
  NEW: 'new', // 新品
  SALE: 'sale', // 促销
  RECOMMEND: 'recommend' // 推荐
}

// 商品标签颜色映射
export const PRODUCT_TAG_COLORS = {
  [PRODUCT_TAG_TYPE.HOT]: '#FF4757',
  [PRODUCT_TAG_TYPE.NEW]: '#2ED573',
  [PRODUCT_TAG_TYPE.SALE]: '#FFA502',
  [PRODUCT_TAG_TYPE.RECOMMEND]: '#5352ED'
}

// 性别选项
export const GENDER_OPTIONS = [
  { value: 'male', label: '男' },
  { value: 'female', label: '女' },
  { value: 'other', label: '其他' }
]

// 国家/地区选项（示例）
export const COUNTRY_OPTIONS = [
  { value: 'CN', label: '中国' },
  { value: 'US', label: '美国' },
  { value: 'JP', label: '日本' },
  { value: 'KR', label: '韩国' },
  { value: 'SG', label: '新加坡' },
  { value: 'MY', label: '马来西亚' },
  { value: 'TH', label: '泰国' },
  { value: 'VN', label: '越南' },
  { value: 'PH', label: '菲律宾' },
  { value: 'ID', label: '印度尼西亚' }
]

// 货币符号映射
export const CURRENCY_SYMBOLS = {
  'USD': '$',
  'CNY': '¥',
  'JPY': '¥',
  'EUR': '€',
  'GBP': '£',
  'KRW': '₩',
  'SGD': 'S$',
  'MYR': 'RM',
  'THB': '฿',
  'VND': '₫',
  'PHP': '₱',
  'IDR': 'Rp'
}

// 时间格式常量
export const DATE_FORMAT = {
  DATE: 'YYYY-MM-DD',
  TIME: 'HH:mm:ss',
  DATETIME: 'YYYY-MM-DD HH:mm:ss',
  MONTH_DAY: 'MM-DD',
  HOUR_MINUTE: 'HH:mm'
}

// 页面大小常量
export const PAGE_SIZE = {
  SMALL: 10,
  MEDIUM: 20,
  LARGE: 50
}

// 本地存储键名
export const STORAGE_KEYS = {
  TOKEN: 'token',
  USER_INFO: 'userInfo',
  SELECTED_PORT: 'selectedPort',
  PORTS: 'ports',
  PERSONAL_CART: 'personalCart',
  SHIP_CART: 'shipCart',
  SEARCH_HISTORY: 'searchHistory',
  LANGUAGE: 'language',
  THEME: 'theme'
}

// 事件名称
export const EVENTS = {
  USER_LOGIN: 'user:login',
  USER_LOGOUT: 'user:logout',
  CART_UPDATE: 'cart:update',
  MESSAGE_RECEIVED: 'message:received',
  NETWORK_STATUS_CHANGE: 'network:status:change'
}

// 错误代码
export const ERROR_CODES = {
  NETWORK_ERROR: 'NETWORK_ERROR',
  TIMEOUT: 'TIMEOUT',
  UNAUTHORIZED: 'UNAUTHORIZED',
  FORBIDDEN: 'FORBIDDEN',
  NOT_FOUND: 'NOT_FOUND',
  SERVER_ERROR: 'SERVER_ERROR'
}

// 默认配置
export const DEFAULT_CONFIG = {
  REQUEST_TIMEOUT: 10000, // 请求超时时间
  IMAGE_QUALITY: 0.8, // 图片质量
  MAX_FILE_SIZE: 10 * 1024 * 1024, // 最大文件大小 10MB
  MAX_IMAGE_SIZE: 5 * 1024 * 1024, // 最大图片大小 5MB
  SEARCH_HISTORY_MAX: 20, // 搜索历史最大数量
  MESSAGE_PAGE_SIZE: 20 // 消息分页大小
}